/**
 * 作者：
 * 创建时间：2012-8-31 上午10:46:49
 */
package dragon.core.util;

import java.io.File;

import ejw.ServerInterface.MultipartFormData;

/**
 * 实现功能：表单文件上传和删除
 */
public class FileHandler {

	/**
	 * 上传文件
	 * 
	 * @param bizCode
	 * @param mfd
	 * @return
	 */
	public static String save(String bizCode, MultipartFormData mfd) {

		if (StringUtils.isEmpty(bizCode)) {
			bizCode = "other";// 对于非业务模型中的文件上传，保存到other目录
		}
		File source = mfd.getStoredLocation();
		// EJW临时文件名命名格式为 upload__6621839f_1397b3027b5__7ffc_00000014.tmp
		// 本系统保存文件的时候保留数字部分 6621839f_1397b3027b5__7ffc_00000014
		// 数据库中存储的格式为 6621839f_1397b3027b5__7ffc_00000014:真实文件名
		String tmpFileName = source.getName();
		tmpFileName = tmpFileName.substring(8, tmpFileName.length() - 4);// 8:"upload__"长度为8;4:".tmp"长度为4
		StringBuilder shortFilePath = new StringBuilder(bizCode).append(FilePath.separator).append(tmpFileName);
		File dest = new File(FilePath.FILEUPLOAD + shortFilePath);
		if (!dragon.core.io.FileHandler.isFileExists(dest.getParent())) {
			dragon.core.io.FileHandler.mkDir(dest.getParent());
		}
		source.renameTo(dest);

		dest = null;
		tmpFileName = null;
		source = null;

		return shortFilePath.append(":").append(mfd.getName()).toString();
	}

	/**
	 * 删除文件
	 * 
	 * @param shortFilePath
	 */
	public static void del(String shortFilePath) {
		// 文件上传支持多文件同时上传
		String[] paths = shortFilePath.split(",");
		String filePath = null;
		for (String path : paths) {
			filePath = FilePath.FILEUPLOAD + path;
			dragon.core.io.FileHandler.deleteFiles(filePath, true);
		}
	}
}
